在結束 Node 內容的講解後,準備進入新的單元,也就是啟動檔 Launch。如同名字一般,將我們所想要的 pakage 或是模擬器合併放入後,實現一件開啟的檔案格式,但首先我們在介紹 launch 之前,要對 xml 有個認識。
這個檔案是甚麼呢?它的用途又在哪?之後有哪些地方會用到呢?我們就來看看吧!
XML全名是可延伸標記式語言 ( Extensible Markup Language ),這邊我們只簡單的講述概念,這就是一種為了給電腦看,而建立的一套標準化的資訊格式,想深度探索的可以參考 這裡 的資料連結。首先在我們在 word 檔、launch 檔、模型的 sdf 檔以及一些描述檔如 xacro 中,都能看到他的身影。如果曾經做過網頁設計的朋友,=應該對它不陌生,大家比較熟悉的 HTML 檔,=就是相似的檔案類型。不同的是 HTML 檔裡面的標籤,都是固定的, Xml 則可以自行設定。至於標籤是什麼?我們就接著看下去吧!
在這些文件裡他所扮演的角色,基本上是一個單純的文字檔,文件由個性資料(character data)和記號(markup)兩者組合。 整個 XML 文件可以視為一個枝狀延伸結構的文件,加上其他的宣告與標籤稱之為此 XML 文件的物質結構(Physical Structures),由 <> 所包裹的稱為標籤,中間的文字稱為元素(element),注意這邊!標籤必須要成對出現,否則系統在判讀時,會產生錯誤的情況。
標籤之間的稱之為內容 (content) ,標籤包括了開始標籤(start tag / open tag)如<tel>
與結束標籤 (end tag / close tag) 如:</tel>
,其實差別就在結束標多了一斜槓,我們還可以在開頭標內添加屬性 (attribute) ,也就是對整個標籤進行更詳細的述說,例如:<sdf version=”1.4”>
,sdf後面的version=”1.4”
就是對<sdf>
這標籤的補充闡述。
(1)被包含在其他元素中的元素稱之為附屬元素 (child) 或 simple type ,如...、...裡面所包含的就是你對這個附屬標籤設定的資料,通常會在主元素包圍下以空格區分主次,可以藉由等等的world來做觀看。
(2)包含了副屬元素的元素稱之為主元素 (parent) 或 complex type ,如.....、…./
在這引用一下 world 檔來做說明, world 的用途之後會在別篇進行講說
<sdf version=”1.4”> # 對這次檔案所使用的版本說明
<world name=”default”> # 建構世界 使用預設資料
<include> # 加入模型或是導入內容的主標籤
<uri>model://sun</uri> # include 的附屬標籤 加入太陽模型
</include> # 結束標與include成對出現
<include>
<uri>model://ground_plane</uri> #加入地面模型
</include>
<include>
<uri>model://double_pendulum_with_base</uri> # 雙擺基礎
<name>pendulum_thick_mud</name> # 命名
<pose>-2.0 0 0 0 0 0</pose> # 定義在世界裡的座標
</include>
……
</world>
</sdf>
從上面我們可以看到,最大的主標籤是<sdf>
,其他的內容都是它的附屬,我們可藉此觀察到附屬與主標籤是相對的,要看其擺放的位置,比如<include>
和<uri>
,雖然前者我們可以知道是後者的主標籤,對於 <world>
或是 <sdf>
來說的身份又變了。
今天幫大家說明了一下, Xml 的概念,有了概念後在去觀看檔案時就不會不知所措了,至少能夠大致推論內容,想當初筆者在第一次看到如此形式的文字檔案時,真的一頭霧水,簡直是在研究馬雅文明的古文,希望這次做些介紹後,幫助沒學過的朋友更容易地去掌握,當然它的深度絕對不止這些,但以基本的運用來說應該不成問題了。明天我們會介紹有甚麼樣的檔案會用這樣的語法去寫,分別應對的應用軟體是什麼,以及理解我們以後會進行安裝教學的工具軟體。